package com.software.room.database;

import android.content.Context;

import androidx.room.Database;
import androidx.room.Room;
import androidx.room.RoomDatabase;

import com.software.room.dao.UserInfoDao;
import com.software.room.entity.UserInfo;

/**
 * 获得UserInfoDao的实例，实现增删改查的功能
 * 同时获得UserInfoDatabase的实例，在Activity中可进行数据库表的打开、关闭等
 * 和SqliteOpenHelper一样
 */

@Database(entities = {UserInfo.class}, version = 1, exportSchema = false)
public abstract class UserInfoDatabase extends RoomDatabase {


    // 规定格式的写法，（写成别的，根据room的版本的不同，可能有运行异常）
    // Java编程规范中的约定
    public abstract UserInfoDao getUserInfoDao();

    public static UserInfoDatabase userInfoDatabase;

    // 获得UserInfoDatabase的实例
    // 写法和SqliteOpenHelper一样，用单例模式
    // room默认不能在主线程中操作数据库，因为数据库是一个耗时操作
    // 实际项目中，默认使用异步
    public static UserInfoDatabase getInstance(Context context) {
        if (userInfoDatabase == null) {
            // 数据库的名字
            userInfoDatabase = Room.databaseBuilder(context.getApplicationContext(), UserInfoDatabase.class, "user-info")
                    //强制开启在主线程中操作数据库
                    .allowMainThreadQueries()
                    .build();
        }
        return userInfoDatabase;
    }
}

